home *** CD-ROM | disk | FTP | other *** search
/ Win 50 Game+ Vol. 8 (Japan) / Win 50 Game+ Vol. 8 (Japan).bin / lha_file / corv01r.lzh / CORV01ED.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1993-12-22  |  17.9 KB  |  829 lines

  1. // ---------------------------------------- //
  2. // Color Kun Puzzle World For Windows Vol.1 //
  3. // MS-WINDOWS Ver3.1                        //
  4. // Borland C++ For Windows Ver3.1           //
  5. // Programing By Country Fox(WIN)           //
  6. // ---------------------------------------- //
  7.  
  8. // âXâeü[âWâGâfâBâ^éuerüDéP
  9. #define WIN31 1
  10.  
  11. #include <owl.h>
  12. #include <bwcc.h>
  13.  
  14. #include <stdio.h>
  15. #include <string.h>
  16. #include <dir.h>
  17.  
  18. #include <inputdia.h>
  19. #include <filedial.h>
  20.  
  21. #define STAGEMAP_SIZEX 20
  22. #define STAGEMAP_SIZEY 11
  23.  
  24.  
  25. // ------------------------------- //
  26. // TApplicationé⌐éτTEditMainé≡ì∞ɼ //
  27. // ------------------------------- //
  28.  
  29. class TgEditMain : public TApplication
  30. {
  31. public:
  32.     TgEditMain(LPSTR AName, HANDLE hInstance, HANDLE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
  33.                 : TApplication(AName, hInstance, hPrevInstance, lpCmdLine, nCmdShow) {};
  34.     virtual void InitMainWindow();
  35. };
  36.  
  37. // ----------------//
  38. // TEditMainâNâëâX //
  39. // ----------------//
  40.  
  41. _CLASSDEF(TgEditWindow)
  42. class TgEditWindow : public TWindow
  43. {
  44. private:
  45.     HBITMAP corkun_bit;          // âJâëü[îNârâbâgâ}âbâv
  46.     int corkun_x,corkun_y;       // âJâëü[îNé╠ê╩Æu
  47.     HDC BugDC;
  48.  
  49.     // âQü[âÇâ}âbâv
  50.     unsigned char stagemap[STAGEMAP_SIZEX][STAGEMAP_SIZEY];
  51.     int stage_no;
  52.     int stage_mode;
  53.     char stage_file[MAXPATH];
  54.  
  55.     int pom_max;
  56.  
  57.     // âLâââëâNâ^ü[ârâbâgâ}âbâvâìâPü[â^âeü[âuâï
  58.     #define CHRBIT_MAX 45
  59.  
  60.     // memo â}âbâvâeü[âuâïêΩùù
  61.     //   0 = Å░
  62.     //   1 = éoénélîN
  63.     //   2 = ò╟
  64.     //   3 = âJâëü[îN
  65.     //   4 - 13 = âJâëü[âuâìâbâNÉ╘
  66.     //  14 - 23 = âJâëü[âuâìâbâNÉ┬
  67.     //  24 = é╖é»é╖é»âuâìâbâN
  68.     //  25 - 34 = âJâëü[âuâìâbâNÉ╘
  69.     //  35 - 44 = âJâëü[âuâìâbâNÉ┬
  70.  
  71.     #define MAP_YUKA   0
  72.     #define MAP_POMKUN 1
  73.     #define MAP_KABE   2
  74.     #define MAP_CORKUN 3
  75.  
  76.     #define MAP_BLOCK 4
  77.     #define MAP_FU_BLOCK 25
  78.     #define MAP_BLOCKEND 45
  79.  
  80.     #define MAP_BLUEBLOCK 4
  81.     #define MAP_REDBLOCK  14
  82.     #define MAP_SUKEBLOCK 24
  83.     #define MAP_FU_BLUEBLOCK 25
  84.     #define MAP_FU_REDBLOCK  35
  85.  
  86.     int pom_bitx[4];
  87.     int pom_bity[4];
  88.  
  89.     int chr_bitx[CHRBIT_MAX];
  90.     int chr_bity[CHRBIT_MAX];
  91.  
  92.     int chr_sizex;
  93.     int chr_sizey;
  94.  
  95.  
  96.     int pbox_sw;
  97.     int pbox_x,pbox_y;
  98.     int pbox_sizex,pbox_sizey;
  99.     int select_chr;
  100.  
  101. public:
  102.     LPSTR GetClassName(void)
  103.     {
  104.         // â_âCâAâìâOâ{âbâNâXé╠âNâëâXû╝é≡ "BorDlgTest" é╔é╖éΘ
  105.         return "Color Kun";
  106.     }
  107.     void GetWindowClass(WNDCLASS& wc)
  108.     {
  109.         TWindow::GetWindowClass(wc);
  110.         // "SAMPLEICON" é╞éóéñû╝æOé╠âAâCâRâôâèâ\ü[âXé≡ÄwÆΦé╖éΘ
  111.         wc.hIcon = LoadIcon(GetApplication()->hInstance, "ICON_1");
  112.     }
  113.  
  114.     // âüâCâô
  115.     TgEditWindow(PTWindowsObject AParent, LPSTR ATitle);
  116.  
  117.     virtual void SetupWindow( void );
  118.  
  119.     virtual void Paint( HDC PaintDC, PAINTSTRUCT& PaintInfo );
  120.  
  121.     // â}âEâXùpDDVTè╓Éöé╠ÆΦï`
  122.     virtual void WMLButtonDown(RTMessage Msg) = [WM_FIRST + WM_LBUTTONDOWN];
  123.     virtual void WMRButtonDown(RTMessage Msg) = [WM_FIRST + WM_RBUTTONDOWN];
  124.  
  125.     // âüâjâàü[ùpDDVTè╓Éöé╠ÆΦï`
  126.     virtual void CMgEditNewFile(RTMessage Msg)  = [CM_FIRST + 101];
  127.     virtual void CMgEditFileOpen(RTMessage Msg) = [CM_FIRST + 102];
  128.     virtual void CMgEditFileSave(RTMessage Msg) = [CM_FIRST + 103];
  129.     virtual void CMgEditExit(RTMessage Msg) = [CM_FIRST + 104];
  130.  
  131.     virtual void CMgEditPomkun(RTMessage Msg) = [CM_FIRST + 201];
  132.     virtual void CMgEditStageNo(RTMessage Msg) = [CM_FIRST + 202];
  133.  
  134.     virtual void CMHelpList(RTMessage Msg) = [CM_FIRST + 301];
  135.     virtual void CMHelpAbout(RTMessage Msg) = [CM_FIRST + 302];
  136.  
  137.     void parts_box(HDC DC,HDC MemDC);
  138.  
  139.     void GameStageMake(HDC DC,HDC MemDC);
  140.     int save_file(void );
  141.     void GameStatus(HDC DC);
  142.     int StageMapMake(void );
  143.     void DefaultStageMake(void );
  144.  
  145. };
  146.  
  147. // TgEditWindowé╠âRâôâXâgâëâNâ^
  148. TgEditWindow::TgEditWindow(PTWindowsObject AParent, LPSTR ATitle)    : TWindow(AParent, ATitle)
  149. {
  150.     int init_chr_bitx[CHRBIT_MAX] =
  151.         {
  152.         0,64,32,128,  // Å░ü@éoénélîN  ò╟  âJâëü[îNü@
  153.         0,32,64,96,128,160,192,224,256,288, // âuâìâbâNÉ┬
  154.         0,32,64,96,128,160,192,224,256,288, // âuâìâbâNÉ╘
  155.         64, // é╖é»é╖é»âuâìâbâN
  156.         0,32,64,96,128,160,192,224,256,288, // òsô«âuâìâbâNÉ┬
  157.         0,32,64,96,128,160,192,224,256,288, // òsô«âuâìâbâNÉ╘
  158.         };
  159.     int init_chr_bity[CHRBIT_MAX] =
  160.         {
  161.         64,32,64, 0,  // Å░ü@éoénélîN  ò╟  âJâëü[îNü@
  162.          96, 96, 96, 96, 96,  96, 96, 96, 96, 96, // âuâìâbâNÉ┬
  163.         128,128,128,128,128, 128,128,128,128,128, // âuâìâbâNÉ╘
  164.         64, // é╖é»é╖é»âuâìâbâN
  165.         160,160,160,160,160, 160,160,160,160,160, // òsô«âuâìâbâNÉ┬
  166.         192,192,192,192,192, 192,192,192,192,192, // òsô«âuâìâbâNÉ╘
  167.         };
  168.     int init_pom_bitx[4] = {  0,32,64,96 };
  169.     int init_pom_bity[4] = { 32,32,32,32 };
  170.     int cou1;
  171.  
  172.     // âLâââëâNâ^âTâCâY
  173.     chr_sizex = 32;
  174.     chr_sizey = 32;
  175.  
  176.     // âEâCâôâhâTâCâY
  177.     Attr.W = chr_sizex * STAGEMAP_SIZEX - 1;
  178.     Attr.H = (chr_sizey * STAGEMAP_SIZEY - 1) + GetSystemMetrics(SM_CYCAPTION) +
  179.                    GetSystemMetrics(SM_CYMENU);
  180.     Attr.Style = WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX;
  181.  
  182.     // âüâjâàü[âeâôâvâîü[âg
  183.     AssignMenu("MENU_1");
  184.  
  185.     // âJâëü[îNé╠âXâeü[â^âXÅëè·ë╗
  186.     corkun_x = 1;
  187.     corkun_y = 1;
  188.  
  189.     for(cou1 = 0;cou1 < CHRBIT_MAX;cou1 ++)
  190.         {
  191.         chr_bitx[cou1] = init_chr_bitx[cou1];
  192.         chr_bity[cou1] = init_chr_bity[cou1];
  193.         }
  194.  
  195.     // éoénélîNé╠Åëè·ë╗
  196.     for(cou1 = 0;cou1 < 4;cou1 ++)
  197.         {
  198.         pom_bitx[cou1] = init_pom_bitx[cou1];
  199.         pom_bity[cou1] = init_pom_bity[cou1];
  200.         }
  201.  
  202.     stage_no = 1;
  203.     strcpy(stage_file,"user.da2");
  204.     DefaultStageMake(); // âXâeü[âWé╠èεæbÉ▌îv
  205.     StageMapMake();     // âXâeü[âWô╟é▌ì₧é▌
  206.  
  207.     // ---
  208.     pbox_sw = 0;
  209.     select_chr = 0;
  210.  
  211. }
  212.  
  213. void TgEditWindow::WMLButtonDown(RTMessage Msg)
  214. {
  215.     int se_tbl[5][10] =
  216.     {
  217.         {  0, 1, 2, 3,24,  0, 0, 0, 0, 0, },
  218.         {  4, 5, 6, 7, 8,  9,10,11,12,13, },
  219.         { 14,15,16,17,18, 19,20,21,22,23, },
  220.         { 25,26,27,28,29, 30,31,32,33,34, },
  221.         { 35,36,37,38,39, 40,41,42,43,44, },
  222.     };
  223.     HDC DC,MemDC;
  224.     int bit_x,bit_y;
  225.     int px,py;
  226.     int x,y;
  227.  
  228.     px = Msg.LP.Lo;
  229.     py = Msg.LP.Hi;
  230.  
  231.     x = px / 32;
  232.     y = py / 32;
  233.  
  234.     DC = GetDC(HWindow);
  235.     MemDC = CreateCompatibleDC( DC );
  236.     SelectObject( MemDC, corkun_bit );
  237.  
  238.  
  239.     if (pbox_sw && ((px > pbox_x && px < (pbox_x + pbox_sizex)) &&
  240.                     (py > pbox_y && py < (pbox_y + pbox_sizey))))
  241.         { // âpü[âcâ{âbâNâXéµéΦïzéóĵéΦ
  242.         x = (px - pbox_x) / 32;
  243.         y = (py - pbox_y) / 32;
  244.         select_chr = se_tbl[y][x];
  245.  
  246.         // âpü[âcâ{âbâNâXÅ┴ïÄ
  247.         GameStageMake(DC ,MemDC);
  248.         GameStatus(DC);
  249.         pbox_sw = 0;
  250.         }
  251.     else
  252.         { // âpü[âcüiâLâââëâNâ^üjé≡Æué¡
  253.         stagemap[x][y] = select_chr;
  254.  
  255.         bit_x = chr_bitx[select_chr];
  256.         bit_y = chr_bity[select_chr];
  257.         BitBlt( DC, x * 32,y * 32,32,32,MemDC,bit_x,bit_y, SRCCOPY );
  258.         }
  259.  
  260.     DeleteDC( MemDC );
  261.     ReleaseDC(HWindow,DC);
  262. }
  263.  
  264.  
  265. // ëEâ{â^âôâNâèâbâN
  266. // âLâââëâNâ^ïzéóĵéΦ
  267. void TgEditWindow::WMRButtonDown(RTMessage Msg)
  268. {
  269.     int se_tbl[5][10] =
  270.     {
  271.         {  0, 1, 2, 3,24,  0, 0, 0, 0, 0, },
  272.         {  4, 5, 6, 7, 8,  9,10,11,12,13, },
  273.         { 14,15,16,17,18, 19,20,21,22,23, },
  274.         { 25,26,27,28,29, 30,31,32,33,34, },
  275.         { 35,36,37,38,39, 40,41,42,43,44, },
  276.     };
  277.  
  278.     HDC DC,MemDC;
  279.     int px,py;
  280.     int x,y;
  281.  
  282.     px = Msg.LP.Lo;
  283.     py = Msg.LP.Hi;
  284.  
  285.     x = px / 32;
  286.     y = py / 32;
  287.  
  288.     if (pbox_sw && ((px > pbox_x && px < (pbox_x + pbox_sizex)) &&
  289.                     (py > pbox_y && py < (pbox_y + pbox_sizey))))
  290.         { // âpü[âcâ{âbâNâXéµéΦïzéóĵéΦ
  291.         x = (px - pbox_x) / 32;
  292.         y = (py - pbox_y) / 32;
  293.         select_chr = se_tbl[y][x];
  294.         return;
  295.         }
  296.  
  297.     if (select_chr == stagemap[x][y])
  298.         {
  299.         DC = GetDC(HWindow);
  300.         MemDC = CreateCompatibleDC( DC );
  301.         SelectObject( MemDC, corkun_bit );
  302.         if (!pbox_sw)
  303.             {
  304.             parts_box(DC,MemDC); // âpü[âcâ{âbâNâXò\Ī
  305.             pbox_sw = 1;
  306.             }
  307.         else
  308.             { // âpü[âcâ{âbâNâXÅ┴ïÄ
  309.             GameStageMake(DC ,MemDC);
  310.             GameStatus(DC);
  311.             pbox_sw = 0;
  312.             }
  313.         DeleteDC( MemDC );
  314.         ReleaseDC(HWindow,DC);
  315.         }
  316.     else
  317.         { // â}âbâvéµéΦïzéóĵéΦ
  318.         select_chr = stagemap[x][y];
  319.         }
  320.  
  321. }
  322.  
  323.  
  324.  
  325. // ---------------- //
  326. // âEâCâôâhë₧ôÜè╓Éö //
  327. // ---------------- //
  328.  
  329. void TgEditWindow::SetupWindow( void )
  330. {
  331.     corkun_bit = LoadBitmap( GetApplication()->hInstance, "CORKUN_CHR" );
  332.     if (corkun_bit == NULL)
  333.         {
  334.         MessageBox(HWindow,
  335.             "Error : LoadBitmap CORKUN_CHR",
  336.             "Color Kun For Windows Vol.1",MB_OK);
  337.         }
  338. }
  339.  
  340.  
  341. void TgEditWindow::Paint( HDC PaintDC, PAINTSTRUCT& )
  342. {
  343.     HDC MemDC;
  344.     TDialog *PAbout;
  345.     static int sw = 0;
  346.  
  347.     MemDC = CreateCompatibleDC( PaintDC );
  348.     SelectObject( MemDC, corkun_bit );
  349.  
  350.     GameStageMake(PaintDC ,MemDC);
  351.     GameStatus(PaintDC);
  352.  
  353.     DeleteDC( MemDC );
  354.  
  355.  
  356.     if (!sw)
  357.         {
  358.         sw = 1;
  359.         PAbout = new TDialog( this, "DIALOG_2"); // â_âCâAâìâOî─é╤Åoé╡
  360.         GetApplication()->ExecDialog(PAbout);    // â_âCâAâìâOÄ└ìs
  361.         }
  362. }
  363.  
  364.  
  365. void TgEditWindow::CMgEditNewFile(RTMessage)
  366. {
  367.     HDC DC,MemDC;
  368.     int err;
  369.     char stage_bk_file[MAXPATH];
  370.  
  371.     strcpy(stage_bk_file,stage_file);
  372.     if (GetApplication()->ExecDialog(
  373.         new TFileDialog(this,SD_FILEOPEN,strcpy(stage_file,"*.da2"))) != IDOK)
  374.         { // âLâââôâZâï
  375.         strcpy(stage_file,stage_bk_file);
  376.         return;
  377.         }
  378.  
  379.     // âfâoâCâXâRâôâeâLâXâgĵô╛
  380.     DC = GetDC( HWindow );
  381.     MemDC = CreateCompatibleDC( DC );
  382.     SelectObject( MemDC, corkun_bit );
  383.  
  384.     DefaultStageMake(); // âXâeü[âWé╠èεæbÉ▌îv
  385.  
  386.     err = StageMapMake();     // âXâeü[âWô╟é▌ì₧é▌
  387.     switch(err)
  388.         {
  389.         case 0 : /* âtâ@âCâïé¬éáéΘ */
  390.         case 1 :
  391.             MessageBox(HWindow,
  392.                 "Error : Not File Name!!",
  393.                 "Color Kun For Windows [Stage Edit] Vol.1",MB_OK);
  394.             break;
  395.         }
  396.  
  397.     GameStageMake(DC,MemDC);    // âXâeü[âWò\Ī
  398.     GameStatus(DC);     // âXâeü[â^âXò\Ī
  399.  
  400.     // âfâoâCâXâRâôâeâLâXâgë≡ò·
  401.     DeleteDC( MemDC );
  402.     ReleaseDC( HWindow, DC );
  403. }
  404.  
  405. // âtâ@âCâïâIü[âvâô
  406. void TgEditWindow::CMgEditFileOpen(RTMessage)
  407. {
  408.     HDC DC,MemDC;
  409.     int err;
  410.     char stage_bk_file[MAXPATH];
  411.  
  412.     strcpy(stage_bk_file,stage_file);
  413.     if (GetApplication()->ExecDialog(
  414.         new TFileDialog(this,SD_FILEOPEN,strcpy(stage_file,"*.da2"))) != IDOK)
  415.         { // âLâââôâZâï
  416.         strcpy(stage_file,stage_bk_file);
  417.         return;
  418.         }
  419.  
  420.     // âfâoâCâXâRâôâeâLâXâgĵô╛
  421.     DC = GetDC( HWindow );
  422.     MemDC = CreateCompatibleDC( DC );
  423.     SelectObject( MemDC, corkun_bit );
  424.  
  425.     DefaultStageMake(); // âXâeü[âWé╠èεæbÉ▌îv
  426.     err = StageMapMake();     // âXâeü[âWô╟é▌ì₧é▌
  427.     switch(err)
  428.         {
  429.         case 2 : // âtâ@âCâïé¬é╚éó
  430.             MessageBox(HWindow,
  431.                 "Error : No File!!",
  432.                 "Color Kun For Windows [Stage Edit] Vol.1",MB_OK);
  433.             break;
  434.  
  435.         case 1 : // âXâeü[âWé¬é▌é┬é⌐éτé╚éó
  436.             MessageBox(HWindow,
  437.                 "Error : No Stage!!",
  438.                 "Color Kun For Windows [Stage Edit] Vol.1",MB_OK);
  439.             break;
  440.         }
  441.  
  442.     GameStageMake(DC,MemDC);    // âXâeü[âWò\Ī
  443.     GameStatus(DC);     // âXâeü[â^âXò\Ī
  444.  
  445.     // âfâoâCâXâRâôâeâLâXâgë≡ò·
  446.     DeleteDC( MemDC );
  447.     ReleaseDC( HWindow, DC );
  448. }
  449.  
  450.  
  451. // âtâ@âCâïâZü[âu
  452. void TgEditWindow::CMgEditFileSave(RTMessage)
  453. {
  454.     char buf[80];
  455.  
  456.     sprintf(buf,"Stage No %d Save",stage_no);
  457.     if (MessageBox(HWindow, "Do you want to save?",
  458.         buf,MB_YESNO | MB_ICONQUESTION) != IDNO)
  459.         { /* âXâeü[âWâZü[âu */
  460.         save_file();
  461.         }
  462.  
  463. }
  464.  
  465. // ÅIù╣
  466. void TgEditWindow::CMgEditExit(RTMessage)
  467. {
  468.     SendMessage(HWindow,WM_CLOSE,0,0);
  469. }
  470.  
  471. // éoénéléjétémé╠ÉöÉ▌ÆΦ
  472. void TgEditWindow::CMgEditPomkun(RTMessage)
  473. {
  474.     HDC DC;
  475.     char st_no[80] = "";
  476.  
  477.     if (GetApplication()->ExecDialog(new TInputDialog(this,"Pomkun Max",
  478.         "Input a new Pomkun Max:",st_no,sizeof(st_no))) != IDOK)
  479.         { // âLâââôâZâï
  480.         return;
  481.         }
  482.  
  483.     pom_max = atoi(st_no);
  484.     if (stage_no <  1) stage_no = 1;
  485.     if (stage_no > 99) stage_no = 99;
  486.  
  487.     // âfâoâCâXâRâôâeâLâXâgĵô╛
  488.     DC = GetDC( HWindow );
  489.     GameStatus(DC);     // âXâeü[â^âXò\Ī
  490.     // âfâoâCâXâRâôâeâLâXâgë≡ò·
  491.     ReleaseDC( HWindow, DC );
  492.  
  493. }
  494.  
  495. // âXâeü[âWâiâôâoü[É▌ÆΦ
  496. void TgEditWindow::CMgEditStageNo(RTMessage)
  497. {
  498.     HDC DC,MemDC;
  499.     int err;
  500.     char st_no[80] = "";
  501.     char buf[80];
  502.  
  503.     sprintf(buf,"Stage No %d Save",stage_no);
  504.     if (MessageBox(HWindow, "Do you want to save?",
  505.         buf,MB_YESNO | MB_ICONQUESTION) != IDNO)
  506.         { /* âXâeü[âWâZü[âu */
  507.         save_file();
  508.         }
  509.  
  510.     if (GetApplication()->ExecDialog(new TInputDialog(this,"Stage Select",
  511.         "Input a new Stage No:",st_no,sizeof(st_no))) != IDOK)
  512.         { // âLâââôâZâï
  513.         return;
  514.         }
  515.  
  516.     stage_no = atoi(st_no);
  517.     if (stage_no == 0)
  518.         { // Error
  519.         MessageBox(HWindow,
  520.             "Error : No Stage!!",
  521.             "Color Kun For Windows [Stage Edit] Vol.1",MB_OK);
  522.  
  523.         stage_no = 1;
  524.         return;
  525.         }
  526.  
  527.  
  528.     // âfâoâCâXâRâôâeâLâXâgĵô╛
  529.     DC = GetDC( HWindow );
  530.     MemDC = CreateCompatibleDC( DC );
  531.     SelectObject( MemDC, corkun_bit );
  532.  
  533.     DefaultStageMake(); // âXâeü[âWé╠èεæbÉ▌îv
  534.     err = StageMapMake();     // âXâeü[âWô╟é▌ì₧é▌
  535.     switch(err)
  536.         {
  537.         case 2 : // âtâ@âCâïé¬é╚éó
  538.             MessageBox(HWindow,
  539.                 "Error : No File!!",
  540.                 "Color Kun For Windows [Stage Edit] Vol.1",MB_OK);
  541.             break;
  542.  
  543.         case 1 : // âXâeü[âWé¬é▌é┬é⌐éτé╚éó
  544.             MessageBox(HWindow,
  545.                 "Error : No Stage!!",
  546.                 "Color Kun For Windows [Stage Edit] Vol.1",MB_OK);
  547.             break;
  548.         }
  549.  
  550.     GameStageMake(DC,MemDC);    // âXâeü[âWò\Ī
  551.     GameStatus(DC);     // âXâeü[â^âXò\Ī
  552.  
  553.     // âfâoâCâXâRâôâeâLâXâgë≡ò·
  554.     DeleteDC( MemDC );
  555.     ReleaseDC( HWindow, DC );
  556. }
  557.  
  558. // âèâXâg
  559. void TgEditWindow::CMHelpList(RTMessage)
  560. {
  561.     TDialog *PAbout;
  562.  
  563.     // âèâXâgâ_âCâAâìâOì∞ɼ
  564.     PAbout = new TDialog( this, "DIALOG_3"); // â_âCâAâìâOî─é╤Åoé╡
  565.     GetApplication()->ExecDialog(PAbout);    // â_âCâAâìâOÄ└ìs
  566. }
  567.  
  568. // âAâoâEâg
  569. void TgEditWindow::CMHelpAbout(RTMessage)
  570. {
  571.     TDialog *PAbout;
  572.  
  573.     // é`éééÅéòéöâ_âCâAâìâOì∞ɼ
  574.     PAbout = new TDialog( this, "DIALOG_1"); // â_âCâAâìâOî─é╤Åoé╡
  575.     GetApplication()->ExecDialog(PAbout);    // â_âCâAâìâOÄ└ìs
  576. }
  577.  
  578.  
  579.  
  580. // âpü[âcâ{âbâNâXò\Ī
  581. void TgEditWindow::parts_box(HDC DC,HDC MemDC)
  582. {
  583.     int cou1,cou2,cou3;
  584.     int bit_x,bit_y;
  585.     int x,y;
  586.  
  587.     x = 32 * 5;
  588.     y = 32 * 3;
  589.  
  590.     pbox_x = x;
  591.     pbox_y = y;
  592.     pbox_sizex = 10 * 32;
  593.     pbox_sizey =  5 * 32;
  594.  
  595.     // âoâbâN
  596.     for(cou1 = 0;cou1 < 11;cou1 ++)
  597.         for(cou2 = 0;cou2 < 6;cou2 ++)
  598.             {
  599.             BitBlt( DC, cou1 * 32 + (x - 16),cou2 * 32 + (y - 16),
  600.                    32, 32, MemDC, 4 * 32,2 * 32, SRCCOPY );
  601.             }
  602.  
  603.  
  604.     // éóéδéóéδêΩùù
  605.     cou3 = 0;
  606.     for(cou1 = 0;cou1 < 5;cou1 ++)
  607.         {
  608.         bit_x = chr_bitx[cou3];
  609.         bit_y = chr_bity[cou3];
  610.         BitBlt( DC, cou1 * 32 + x,y,
  611.                32, 32, MemDC, bit_x, bit_y, SRCCOPY );
  612.         cou3 ++;
  613.         if (cou3 == MAP_BLOCK) cou3 = MAP_SUKEBLOCK; // é╖é»é╖é»âuâìâbâNÉ▌ÆΦ
  614.         }
  615.  
  616.     // âuâìâbâNêΩùù
  617.     cou3 = 4;
  618.     for(cou2 = 0;cou2 < 4;cou2 ++)
  619.         for(cou1 = 0;cou1 < 10;cou1 ++)
  620.             {
  621.             bit_x = chr_bitx[cou3];
  622.             bit_y = chr_bity[cou3];
  623.             BitBlt( DC, cou1 * 32 + x, cou2 * 32 + (y + 32),
  624.                    32, 32, MemDC, bit_x, bit_y, SRCCOPY );
  625.             cou3 ++;
  626.             if (cou3 == MAP_SUKEBLOCK) cou3 ++; /* é╖é»é╖é»âuâìâbâNé═é╞é╬é╖ */
  627.             }
  628.  
  629. }
  630.  
  631.  
  632.  
  633. // âXâeü[âWò`ëµ
  634. void TgEditWindow::GameStageMake(HDC DC ,HDC MemDC)
  635. {
  636.     int cou1,cou2;
  637.     int bit_x,bit_y;
  638.  
  639.     // âmü[â}âïé╠âXâeü[âWò\Ī
  640.     for(cou1 = 0;cou1 < STAGEMAP_SIZEX;cou1 ++)
  641.         for(cou2 = 0;cou2 < STAGEMAP_SIZEY;cou2 ++)
  642.             {
  643.             bit_x = chr_bitx[stagemap[cou1][cou2]];
  644.             bit_y = chr_bity[stagemap[cou1][cou2]];
  645.             BitBlt( DC, cou1 * 32, cou2 * 32,
  646.                    32, 32, MemDC, bit_x, bit_y, SRCCOPY );
  647.             }
  648.  
  649. #if 0
  650.     // âJâëü[îNò\Ī
  651.     bit_x = chr_bitx[MAP_CORKUN];
  652.     bit_y = chr_bity[MAP_CORKUN];
  653.     BitBlt( DC, corkun_x * 32, corkun_y * 32,
  654.                    32, 32, MemDC, bit_x, bit_y, SRCCOPY );
  655. #endif
  656. }
  657.  
  658. // âQü[âÇâXâeü[â^âX
  659. void TgEditWindow::GameStatus(HDC DC)
  660. {
  661.     char str[80];
  662.  
  663.     // éoénélîNé≡ü|éPÅCÉ│é╡é─ò\Ī
  664.     sprintf(str,"STAGE %2.2d : POM KUN %2.2d",stage_no,pom_max);
  665.     TextOut(DC,232,7,str,strlen(str));
  666. }
  667.  
  668.  
  669. // âXâeü[âWâ}âbâvé╠ɺì∞
  670. // 0 ô╟é▌ì₧é▌ɼî≈
  671. // 1 âXâeü[âWé¬é▌é┬é⌐éτé╚éó
  672. // 2 âtâ@âCâïé¬é▌é┬é⌐éτé╚éó
  673. int TgEditWindow::StageMapMake(void )
  674. {
  675.     int stage_tab;
  676.     int cou1,cou2;
  677.     char buf[80];
  678.     FILE *fp;
  679.  
  680.     /* âtâ@âCâïô╟é▌ì₧é▌ */
  681.     fp = fopen(stage_file,"rt");
  682.     if (fp == NULL)
  683.          {
  684.          fclose(fp);
  685.          return(2);
  686.          }
  687.  
  688.     do
  689.         {
  690.         while (fgets(buf,80,fp) != NULL && buf[0] != '.');
  691.         if (strncmp(buf,".data",5) == 0)
  692.             {
  693.             sscanf(&buf[5],"%d",&stage_tab);
  694.             }
  695.         else
  696.             {
  697.             fclose(fp);
  698.             return(1);
  699.             }
  700.         }
  701.     while (stage_no != stage_tab);
  702.  
  703.     fgets(buf,80,fp);
  704.     sscanf(&buf[4],"%d",&pom_max);
  705.  
  706.     for (cou1 = 0;cou1 < STAGEMAP_SIZEY;cou1++)
  707.         {
  708.         if (fgets(buf,80,fp) == NULL)
  709.             {
  710.             stage_no = -1;
  711.             fclose(fp);
  712.             return(2);
  713.             }
  714.         for (cou2 = 0;cou2 < STAGEMAP_SIZEX;cou2++)
  715.             {
  716.             stagemap[cou2][cou1] = buf[cou2] - '0';
  717. #if 0
  718.             if (stagemap[cou2][cou1] == MAP_CORKUN)
  719.                 {
  720.                 corkun_x = cou2;
  721.                 corkun_y = cou1;
  722.                 }
  723. #endif
  724.             }
  725.         }
  726.  
  727.     fclose(fp);
  728.  
  729.     return(0);
  730. }
  731.  
  732. int TgEditWindow::save_file(void )
  733. {
  734.     int cou1,cou2;
  735.     int stage_tab;
  736.     char buf[80];
  737.     FILE *fp; /* âtâ@âCâïâfü[â^é≡éåéÉâ|âCâôâ^é╔æπôⁿ */
  738.  
  739.     fp = fopen(stage_file,"rt+");
  740.     if (fp == NULL) /* âfü[â^âtâ@âCâïé╠ÉVïKì∞ɼ */
  741.         {
  742.         fclose(fp);
  743.         fp = fopen(stage_file,"wt+");
  744.         }
  745.  
  746.     do    {
  747.         while (fgets(buf,80,fp) != NULL && buf[0] != '.');
  748.         if (strncmp(buf,".data",5) == 0)
  749.             {
  750.             sscanf(&buf[5],"%d",&stage_tab);
  751.             fseek(fp,0,SEEK_CUR); /*  ôⁿÅoù═é╠É╪éΦæ╓骠*/
  752.             }
  753.         else /* ÉVïKâXâeü[âWâfü[â^é╞é╡é─ì∞ɼ */
  754.             {
  755.             fclose(fp);
  756.             fp = fopen(stage_file,"at");
  757.             fprintf(fp,".data %d\n",stage_no);
  758.             break;
  759.             }
  760.         } while (stage_no != stage_tab);
  761.  
  762.     fprintf(fp,"pom %d\n",pom_max);
  763.  
  764.     for (cou1=0;cou1 <= 10;cou1++)
  765.         {
  766.         for (cou2=0;cou2 <= 19;cou2++)
  767.             fprintf(fp,"%c",stagemap[cou2][cou1]+'0');
  768.         fprintf(fp,"\n");
  769.         }
  770.     fclose(fp);
  771.  
  772.     return(0);
  773. }
  774.  
  775.  
  776.  
  777.  
  778.  
  779. // âXâeü[âWèεû{É▌îvüiâXâeü[âWâtâ@âCâïé¬î⌐é┬é⌐éτé╚é⌐é┴é╜ÅΩìçé╚é╟é╔Ägùpüj
  780. void TgEditWindow::DefaultStageMake(void )
  781. {
  782.     int cou1,cou2;
  783.  
  784.     // Å░
  785.     for(cou1 = 0;cou1 < STAGEMAP_SIZEX;cou1 ++)
  786.         for(cou2 = 0;cou2 < STAGEMAP_SIZEY;cou2 ++)
  787.             stagemap[cou1][cou2] = MAP_YUKA;
  788.  
  789.     // ò╟
  790.     for(cou1 = 0;cou1 < STAGEMAP_SIZEX;cou1 ++)
  791.         {
  792.         stagemap[cou1][0] = MAP_KABE;
  793.         stagemap[cou1][STAGEMAP_SIZEY - 1] = MAP_KABE;
  794.         }
  795.     for(cou1 = 0;cou1 < STAGEMAP_SIZEY;cou1 ++)
  796.         {
  797.         stagemap[0][cou1] = MAP_KABE;
  798.         stagemap[STAGEMAP_SIZEX - 1][cou1] = MAP_KABE;
  799.         }
  800.  
  801.     corkun_x = 1;
  802.     corkun_y = 1;
  803.     pom_max = 25;
  804. }
  805.  
  806.  
  807.  
  808.  
  809.  
  810. // âEâCâôâhâCâjâVâââëâCâY
  811. void TgEditMain::InitMainWindow()
  812. {
  813.     MainWindow = new TgEditWindow(NULL, Name);
  814.  
  815.     BWCCGetVersion();
  816. }
  817.  
  818. // âEâCâôâhâüâCâôè╓Éö
  819. int PASCAL WinMain(HANDLE hInstance, HANDLE hPrevInstance,
  820.   LPSTR lpCmdLine, int nCmdShow)
  821. {
  822.     TgEditMain gEditMain("COLOR KUN PAZZULE WORLD FOR WINDOWS Vol.1 [Stage Editer]",
  823.                      hInstance, hPrevInstance, lpCmdLine, nCmdShow);
  824.  
  825.     gEditMain.Run();
  826.  
  827.     return gEditMain.Status;
  828. }
  829.